Page({
    data: {
      doctor: {},           // 医生信息
      consultStartTime: "", // 咨询开始时间
      messages: [],         // 消息列表
      inputContent: "",     // 输入框内容
      inputFocused: false   // 输入框焦点状态
    },
  
    /**
     * 页面加载时初始化数据
     */
    onLoad() {
      // 初始化医生信息
      this.setData({
        doctor: this.getDoctorInfo(),
        consultStartTime: this.getConsultStartTime(),
        messages: this.getInitialMessages()
      });
    },
  
    // ===================== 数据 Mock 函数（后续替换为接口）=====================
    /**
     * 获取医生信息（Mock 函数）
     */
    getDoctorInfo() {
      return {
        id: 1,
        name: "张正畸",
        avatar: "/assets/images/my/avatar.jpg",
        title: "主任医师",
        department: "正畸科",
        hospital: "北京口腔医院",
        online: true
      };
    },
  
    /**
     * 获取咨询开始时间（Mock 函数）
     */
    getConsultStartTime() {
      return "2025-11-24 10:30";
    },
  
    /**
     * 获取初始消息列表（Mock 函数）
     */
    getInitialMessages() {
      return [
        {
          id: 1,
          sender: "doctor",
          content: "您好，我是张医生，请问有什么可以帮助您的吗？",
          time: "10:30"
        },
        {
          id: 2,
          sender: "user",
          content: "医生您好，我想咨询一下隐形矫正的费用大概是多少？",
          time: "10:31"
        },
        {
          id: 3,
          sender: "doctor",
          content: "隐形矫正的费用因品牌、矫正难度、治疗周期等因素有所差异，一般在2万-5万不等。建议您先到院做个详细检查，我会根据您的牙齿情况给出具体方案。",
          time: "10:32"
        }
      ];
    },
  
    // ===================== 原有交互逻辑（无需修改）=====================
    // 输入框内容变化
    onInputChange(e) {
      this.setData({
        inputContent: e.detail.value
      });
    },
  
    // 输入框获取焦点
    onInputFocus() {
      this.setData({
        inputFocused: true
      });
      this.scrollToBottom();
    },
  
    // 输入框失去焦点
    onInputBlur() {
      this.setData({
        inputFocused: false
      });
    },
  
    // 发送消息
    sendMessage() {
      const { inputContent, messages } = this.data;
      if (!inputContent.trim()) {
        wx.showToast({
          title: "请输入内容",
          icon: "none"
        });
        return;
      }
  
      // 构造用户消息
      const newMessage = {
        id: messages.length + 1,
        sender: "user",
        content: inputContent,
        time: this.formatTime(new Date())
      };
  
      // 更新消息列表
      this.setData({
        messages: [...messages, newMessage],
        inputContent: ""
      });
  
      // 模拟医生回复（后续替换为接口请求）
      setTimeout(() => {
        const doctorReply = {
          id: messages.length + 2,
          sender: "doctor",
          content: "感谢您的提问，具体费用需要结合您的口腔检查结果来定。您可以点击“预约检查”按钮，选择合适的时间到院，我会为您安排免费初诊。",
          time: this.formatTime(new Date())
        };
        this.setData({
          messages: [...this.data.messages, doctorReply]
        });
        this.scrollToBottom();
      }, 1500);
  
      this.scrollToBottom();
    },
  
    // 滚动到底部
    scrollToBottom() {
      wx.createSelectorQuery()
        .select(".message-list")
        .boundingClientRect((rect) => {
          wx.pageScrollTo({
            scrollTop: rect.bottom,
            duration: 300
          });
        })
        .exec();
    },
  
    // 加载更多消息（模拟）
    loadMoreMessages() {
      wx.showLoading({
        title: "加载中...",
        mask: true
      });
      setTimeout(() => {
        wx.hideLoading();
        wx.showToast({
          title: "已加载全部消息",
          icon: "none"
        });
      }, 1000);
    },
  
    // 格式化时间为“时:分”
    formatTime(date) {
      const hours = date.getHours().toString().padStart(2, "0");
      const minutes = date.getMinutes().toString().padStart(2, "0");
      return `${hours}:${minutes}`;
    }
  });